| Project | Date |
|---|---|
| NLTEST | 28 Oct 2020, 11:18 |
The following summary displays scenarios that failed.
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:05.402 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:10:05.402 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:10:28.010 response time in milliseconds: 21839.04
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:27 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:10:11 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/135a7821-b419-4298-9947-6dc09e98011a.json","testRuns":{"TestRun":{"id":"EID135a7821-b419-4298-9947-6dc09e98011a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:09.708Z","testTasks":{"TestTask":{"id":"EID4e12286b-3bea-4416-ab30-21165565c987","parent":{"ref":"EID135a7821-b419-4298-9947-6dc09e98011a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID6cb4b02f-a0a3-492a-b50c-93fa85eea17a"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID6cb4b02f-a0a3-492a-b50c-93fa85eea17a","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:10:05.855Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:08.884Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:10:28.013 [print] EID135a7821-b419-4298-9947-6dc09e98011a
11:10:28.014 [print] UNDEFINED
11:10:28.014 [print] Conformance Class Download Service - Pre-defined Atom
11:10:28.014 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/135a7821-b419-4298-9947-6dc09e98011a.json
11:10:28.014 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/log
11:10:28.014 [print] statuspath TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a
11:10:28.014 [print] progresspath TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
11:10:28.015 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:28.561 response time in milliseconds: 545.67
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:10:28 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"133","max":"134","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:10:28.561 [print] {
"val": "133",
"max": "134",
"log": [
"28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)",
"28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:10:09 - Preparing 1 Test Task:",
"28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)",
"28.10.2020 11:10:09 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:10:09 - with parameters: ",
"28.10.2020 11:10:09 - etf.testcases = *",
"28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:10:09 - Setting state to CREATED",
"28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z",
"28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:10:13 - Project Properties: ",
"28.10.2020 11:10:13 - etf.testcases - * ",
"28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
"28.10.2020 11:10:13 - username - ",
"28.10.2020 11:10:13 - authUser - ",
"28.10.2020 11:10:13 - authMethod - basic ",
"28.10.2020 11:10:13 - TestRunTask initialized",
"28.10.2020 11:10:24 ERROR Assertion failed with error 'TR.incorrectFeedSelfReference'",
"28.10.2020 11:10:27 ERROR Assertion failed with error 'TR.missingLinkToMetadataRecordForDownloadService'"
]
}
11:10:28.562 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:29.077 response time in milliseconds: 515.15
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:10:29 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"152","max":"153","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:10:29.078 retry condition not satisfied: response.val == response.max
11:10:29.078 sleeping before retry #1
11:10:34.079 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:34.588 response time in milliseconds: 508.87
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:10:34 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:10:34.589 retry condition not satisfied: response.val == response.max
11:10:34.589 sleeping before retry #2
11:10:39.590 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:40.116 response time in milliseconds: 525.15
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:10:40 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:10:40.116 retry condition not satisfied: response.val == response.max
11:10:40.116 sleeping before retry #3
11:10:45.117 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:45.649 response time in milliseconds: 530.73
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:10:45 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:10:45.653 retry condition not satisfied: response.val == response.max
11:10:45.653 sleeping before retry #4
11:10:50.654 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:51.189 response time in milliseconds: 534.53
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:10:51 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:10:51.197 retry condition not satisfied: response.val == response.max
11:10:51.197 sleeping before retry #5
11:10:56.198 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:56.716 response time in milliseconds: 517.15
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:10:56 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:10:56.716 retry condition not satisfied: response.val == response.max
11:10:56.716 sleeping before retry #6
11:11:01.717 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:02.248 response time in milliseconds: 528.00
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:11:02 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:11:02.248 retry condition not satisfied: response.val == response.max
11:11:02.248 sleeping before retry #7
11:11:07.249 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:07.767 response time in milliseconds: 517.33
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:11:07 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:07.768 retry condition not satisfied: response.val == response.max
11:11:07.768 sleeping before retry #8
11:11:12.768 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:13.293 response time in milliseconds: 523.63
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:11:13 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:13.293 retry condition not satisfied: response.val == response.max
11:11:13.293 sleeping before retry #9
11:11:18.294 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:18.812 response time in milliseconds: 518.07
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:11:18 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:18.813 retry condition not satisfied: response.val == response.max
11:11:18.813 sleeping before retry #10
11:11:23.814 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:24.338 response time in milliseconds: 523.76
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:11:24 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:24.338 retry condition not satisfied: response.val == response.max
11:11:24.338 sleeping before retry #11
11:11:29.339 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:29.849 response time in milliseconds: 509.81
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:11:29 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:29.850 retry condition not satisfied: response.val == response.max
11:11:29.850 sleeping before retry #12
11:11:34.850 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:35.358 response time in milliseconds: 507.44
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:11:35 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:35.358 retry condition not satisfied: response.val == response.max
11:11:35.358 sleeping before retry #13
11:11:40.359 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:40.866 response time in milliseconds: 505.05
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:11:40 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:40.867 retry condition not satisfied: response.val == response.max
11:11:40.867 sleeping before retry #14
11:11:45.867 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:46.391 response time in milliseconds: 519.82
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:11:46 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:46.391 retry condition not satisfied: response.val == response.max
11:11:46.391 sleeping before retry #15
11:11:51.392 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:51.904 response time in milliseconds: 511.58
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:11:51 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:51.905 retry condition not satisfied: response.val == response.max
11:11:51.905 sleeping before retry #16
11:11:56.906 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:57.523 response time in milliseconds: 616.80
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:11:57 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:11:57.537 retry condition not satisfied: response.val == response.max
11:11:57.537 sleeping before retry #17
11:12:02.538 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:03.056 response time in milliseconds: 509.80
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:12:02 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:10:09 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:09 UTC 2020)","28.10.2020 11:10:09 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:09 - Preparing 1 Test Task:","28.10.2020 11:10:09 - TestTask 1 (4e12286b-3bea-4416-ab30-21165565c987)","28.10.2020 11:10:09 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:09 - with parameters: ","28.10.2020 11:10:09 - etf.testcases = *","28.10.2020 11:10:09 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:09 - Setting state to CREATED","28.10.2020 11:10:09 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:11 - Starting TestRun.135a7821-b419-4298-9947-6dc09e98011a at 2020-10-28T11:10:13Z","28.10.2020 11:10:13 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:13 - Project Properties: ","28.10.2020 11:10:13 - etf.testcases - * ","28.10.2020 11:10:13 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:13 - username - ","28.10.2020 11:10:13 - authUser - ","28.10.2020 11:10:13 - authMethod - basic ","28.10.2020 11:10:13 - TestRunTask initialized","28.10.2020 11:10:24 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:10:27 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:11:01 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:11:59 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:12:03.057 retry condition not satisfied: response.val == response.max
11:12:03.057 sleeping before retry #18
11:12:08.058 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:10.845 response time in milliseconds: 2787.05
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:12:10 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}
11:12:10.846 retry condition satisfied
11:12:10.846 [print] {
"val": "241",
"max": "241",
"log": [
]
}
11:12:10.846 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID135a7821-b419-4298-9947-6dc09e98011a
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:12.949 response time in milliseconds: 2102.41
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Cache-Control: public, max-age=120
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:12:12 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Last-Modified: Wed, 28 Oct 2020 11:12:10 GMT
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
11:12:12.954 [print]
11:12:12.954 [print]
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:40.364 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:40.775 response time in milliseconds: 410.80 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:40 GMT 1 < X-Cnection: [close, close]
11:15:40.776 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:47.477 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities"}}}
11:16:47.478 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities"}}}
11:16:48.662 response time in milliseconds: 1183.85
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:48 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883808592","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:48.662 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:06:14.441 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
11:06:14.443 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
11:06:15.868 response time in milliseconds: 1424.21
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:15 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883175794","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:06:15.869 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:13:06.344 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:06.753 response time in milliseconds: 408.20 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:06 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:06.753 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:22.671 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:23.091 response time in milliseconds: 418.80 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:13:22 GMT 1 < X-Cnection: [close, close]
11:13:23.091 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:25.877 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:14:25.878 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:14:27.968 response time in milliseconds: 1984.40
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:27 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883667799","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:14:27.968 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:18.948 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:19.368 response time in milliseconds: 419.69 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:19 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:15:19.368 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:55.240 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/wms/v1_0?service=WMS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:56.496 response time in milliseconds: 1255.64 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:56 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:15:56.496 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:04:41.519 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:42.627 response time in milliseconds: 1096.27 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 7165 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:04:42 GMT 1 < Etag: "a477efe52b464353930e4767fc4d3506-1" 1 < Last-Modified: Tue, 12 Nov 2019 10:10:42 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 1642232A6FAB6EFF 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:04:42.628 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:17.974 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities"}}}
11:15:17.976 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 305
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities"}}}
11:15:18.975 response time in milliseconds: 998.54
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:18 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883718912","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:18.976 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:04:53.313 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS"}}}
11:04:53.314 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS"}}}
11:04:54.958 response time in milliseconds: 1536.75
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:54 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883094726","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:04:54.959 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:07:08.234 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/wms/v1_0?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:07:08.640 response time in milliseconds: 405.87 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:07:08 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:07:08.642 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:17.570 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/bag/wms/v1_1?request=getCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:17.963 response time in milliseconds: 393.10 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:17 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:15:17.964 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:04:41.493 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities"}}}
11:04:41.503 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities"}}}
11:04:42.594 response time in milliseconds: 1088.57
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:42 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883082511","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:04:42.596 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:04:42.655 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:43.079 response time in milliseconds: 423.12 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:04:43 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:04:43.081 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:06:38.994 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/top10nlv2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:39.399 response time in milliseconds: 404.17 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:06:39 GMT 1 < ETag: "2b852-5af58ad5c5979-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:44 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:06:39.401 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:09:15.059 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:15.481 response time in milliseconds: 422.15 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:15 GMT 1 < ETag: "6b28-5af58ad5669f4-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:09:15.482 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:06:09.966 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities"}}}
11:06:09.967 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 280
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities"}}}
11:06:12.601 response time in milliseconds: 2528.29
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:12 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883172412","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:06:12.602 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:14:45.980 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:46.383 response time in milliseconds: 403.48 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:46 GMT 1 < X-Cnection: [close, close]
11:14:46.384 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:04:47.510 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:47.911 response time in milliseconds: 400.64 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:04:47 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:04:47.912 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:57.430 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:57.814 response time in milliseconds: 383.98 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:57 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:57.814 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:10:21.295 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:21.693 response time in milliseconds: 398.17 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:21 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:10:21.694 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:39.121 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:39.537 response time in milliseconds: 415.98 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:38 GMT 1 < X-Cnection: [close, close]
11:16:39.541 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:10:14.524 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:15.204 response time in milliseconds: 679.83 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:15 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 16422377E02E8F8B 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:10:15.205 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:11:03.066 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
11:11:03.066 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
11:11:04.351 response time in milliseconds: 1283.31
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:04 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883464287","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:11:04.351 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:06.761 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}
11:13:06.761 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}
11:13:37.108 java.net.SocketTimeoutException: Read timed out, http call failed after 30347 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:13:37.108 http request failed:
java.net.SocketTimeoutException: Read timed out
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:43.752 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:44.153 response time in milliseconds: 400.35 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:44 GMT 1 < ETag: "18f53-5af58a64c5e67-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:16:44.157 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:21.513 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/nwbwegen/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:21.900 response time in milliseconds: 386.98 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:21 GMT 1 < ETag: "2509-5af58a1acea00-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:41:28 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:21.901 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:14:01.619 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:02.213 response time in milliseconds: 593.40 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:01 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 164223ACB590A587 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:14:02.214 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:16:31.764 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:32.177 response time in milliseconds: 412.14 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:32 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:32.178 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:48.992 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities"}}}
11:16:48.992 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities"}}}
11:16:49.978 response time in milliseconds: 984.69
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:49 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883809919","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:49.978 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:04.950 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/cbsgebiedsindelingen/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:05.390 response time in milliseconds: 439.55 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:05 GMT 1 < ETag: "380a0d-5af58a64b8f5e-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:10:05.390 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:13:09.003 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/wms/v1_0?service=WMS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:09.403 response time in milliseconds: 400.51 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:09 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:09.406 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:05.254 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:05.653 response time in milliseconds: 398.70 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:05 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:05.656 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:10:54.010 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:54.426 response time in milliseconds: 416.10 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:54 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 16422381075DCC56 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:10:54.426 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:58.902 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS"}}}
11:12:58.903 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS"}}}
11:13:02.460 response time in milliseconds: 3451.71
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:02 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883582281","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:02.460 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:54.252 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:54.668 response time in milliseconds: 415.28 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:54 GMT 1 < X-Cnection: [close, close]
11:16:54.670 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:24.203 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:24.597 response time in milliseconds: 393.77 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:24 GMT 1 < ETag: "1a4aa-5af58a653b16e-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:24.597 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:13.863 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities"}}}
11:12:13.870 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 301
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities"}}}
11:12:17.143 response time in milliseconds: 3168.31
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:16 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883536962","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:12:17.144 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:51.504 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities"}}}
11:16:51.504 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities"}}}
11:16:53.209 response time in milliseconds: 1597.15
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:53 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883813040","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:53.209 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:53.215 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities"}}}
11:16:53.216 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 276
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities"}}}
11:16:55.020 response time in milliseconds: 1698.29
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:54 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883814856","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:55.020 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:14:31.789 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:32.198 response time in milliseconds: 408.57 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:32 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:14:32.198 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:04:55.394 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:55.815 response time in milliseconds: 418.11 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:04:55 GMT 1 < ETag: "18264-5af58ad52204f-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:04:55.817 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:07:02.034 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:07:02.518 response time in milliseconds: 484.19 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:07:02 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:07:02.519 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:05:24.807 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs"}}}
11:05:24.811 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 283
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs"}}}
11:05:26.386 response time in milliseconds: 1469.76
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:05:26 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883126212","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:05:26.388 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:08:10.071 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rvo/invasieve-exoten/wms/v1_0?request=GetCapabilities&service=wms 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:08:10.472 response time in milliseconds: 401.21 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:08:10 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:08:10.473 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:09.411 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities"}}}
11:13:09.412 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities"}}}
11:13:14.963 response time in milliseconds: 5444.14
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:14 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883594789","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:14.964 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:06:06.586 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:06.988 response time in milliseconds: 401.34 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:06:06 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:06:06.989 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:24.554 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities"}}}
11:09:24.555 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities"}}}
11:09:28.839 response time in milliseconds: 4179.33
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:28 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883368672","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:09:28.840 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:31.184 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:31.590 response time in milliseconds: 405.12 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:31 GMT 1 < ETag: "6b28-5af58a658d5db-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:10:31.590 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:06:43.483 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:06:43.484 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:06:49.508 response time in milliseconds: 5265.16
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:48 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:06:46 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/5b0a94c9-969e-418e-9ffe-86bf617c5cab.json","testRuns":{"TestRun":{"id":"EID5b0a94c9-969e-418e-9ffe-86bf617c5cab","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:46.305Z","testTasks":{"TestTask":{"id":"EID5a52191d-4d6f-4e53-95fa-6a902b5c0d90","parent":{"ref":"EID5b0a94c9-969e-418e-9ffe-86bf617c5cab"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDf3f9cfc9-1744-4b86-b60b-3bae80c27c29"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDf3f9cfc9-1744-4b86-b60b-3bae80c27c29","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:43.942Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:45.798Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:06:49.511 [print] EID5b0a94c9-969e-418e-9ffe-86bf617c5cab
11:06:49.511 [print] UNDEFINED
11:06:49.512 [print] Conformance Class Download Service - Pre-defined Atom
11:06:49.514 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/5b0a94c9-969e-418e-9ffe-86bf617c5cab.json
11:06:49.515 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/log
11:06:49.516 [print] statuspath TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab
11:06:49.516 [print] progresspath TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
11:06:49.517 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:50.044 response time in milliseconds: 523.48
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:06:49 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized"]}
11:06:50.045 [print] {
"val": "7",
"max": "8",
"log": [
"28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)",
"28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:06:46 - Preparing 1 Test Task:",
"28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)",
"28.10.2020 11:06:46 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:06:46 - with parameters: ",
"28.10.2020 11:06:46 - etf.testcases = *",
"28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:06:46 - Setting state to CREATED",
"28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z",
"28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:06:48 - Project Properties: ",
"28.10.2020 11:06:48 - etf.testcases - * ",
"28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
"28.10.2020 11:06:48 - username - ",
"28.10.2020 11:06:48 - authUser - ",
"28.10.2020 11:06:48 - authMethod - basic ",
"28.10.2020 11:06:48 - TestRunTask initialized"
]
}
11:06:50.046 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:50.549 response time in milliseconds: 502.67
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:06:50 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized"]}
11:06:50.550 retry condition not satisfied: response.val == response.max
11:06:50.550 sleeping before retry #1
11:06:55.551 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:56.066 response time in milliseconds: 514.59
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:06:56 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized"]}
11:06:56.067 retry condition not satisfied: response.val == response.max
11:06:56.067 sleeping before retry #2
11:07:01.068 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:01.588 response time in milliseconds: 520.11
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:07:01 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:07:01.588 retry condition not satisfied: response.val == response.max
11:07:01.588 sleeping before retry #3
11:07:06.590 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:07.109 response time in milliseconds: 517.63
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:07:07 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"86","max":"87","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:07:07.109 retry condition not satisfied: response.val == response.max
11:07:07.109 sleeping before retry #4
11:07:12.111 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:12.635 response time in milliseconds: 523.74
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:07:12 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"141","max":"142","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:12.638 retry condition not satisfied: response.val == response.max
11:07:12.638 sleeping before retry #5
11:07:17.640 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:18.160 response time in milliseconds: 520.33
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:07:18 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:18.161 retry condition not satisfied: response.val == response.max
11:07:18.161 sleeping before retry #6
11:07:23.162 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:23.675 response time in milliseconds: 512.05
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:07:23 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:23.681 retry condition not satisfied: response.val == response.max
11:07:23.681 sleeping before retry #7
11:07:28.682 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:29.198 response time in milliseconds: 515.44
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:07:29 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:29.199 retry condition not satisfied: response.val == response.max
11:07:29.199 sleeping before retry #8
11:07:34.200 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:34.721 response time in milliseconds: 520.14
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:07:34 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:34.722 retry condition not satisfied: response.val == response.max
11:07:34.722 sleeping before retry #9
11:07:39.723 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:40.245 response time in milliseconds: 520.50
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:07:40 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:40.250 retry condition not satisfied: response.val == response.max
11:07:40.250 sleeping before retry #10
11:07:45.252 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:45.782 response time in milliseconds: 526.85
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:07:45 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:45.786 retry condition not satisfied: response.val == response.max
11:07:45.786 sleeping before retry #11
11:07:50.787 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:51.299 response time in milliseconds: 511.35
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:07:51 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:51.306 retry condition not satisfied: response.val == response.max
11:07:51.306 sleeping before retry #12
11:07:56.308 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:56.836 response time in milliseconds: 527.31
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:07:56 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:56.836 retry condition not satisfied: response.val == response.max
11:07:56.836 sleeping before retry #13
11:08:01.837 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:02.353 response time in milliseconds: 515.44
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:08:02 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:02.356 retry condition not satisfied: response.val == response.max
11:08:02.356 sleeping before retry #14
11:08:07.357 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:07.877 response time in milliseconds: 518.56
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:08:07 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:07.877 retry condition not satisfied: response.val == response.max
11:08:07.877 sleeping before retry #15
11:08:12.878 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:13.390 response time in milliseconds: 510.75
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:08:13 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:13.396 retry condition not satisfied: response.val == response.max
11:08:13.396 sleeping before retry #16
11:08:18.397 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:18.907 response time in milliseconds: 509.51
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:08:18 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:18.908 retry condition not satisfied: response.val == response.max
11:08:18.908 sleeping before retry #17
11:08:23.909 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:24.429 response time in milliseconds: 519.48
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:08:24 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:24.429 retry condition not satisfied: response.val == response.max
11:08:24.429 sleeping before retry #18
11:08:29.430 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:29.945 response time in milliseconds: 513.63
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:08:29 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:29.945 retry condition not satisfied: response.val == response.max
11:08:29.951 sleeping before retry #19
11:08:34.952 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5b0a94c9-969e-418e-9ffe-86bf617c5cab/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:35.465 response time in milliseconds: 511.95
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:08:35 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:46 UTC 2020)","28.10.2020 11:06:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:46 - Preparing 1 Test Task:","28.10.2020 11:06:46 - TestTask 1 (5a52191d-4d6f-4e53-95fa-6a902b5c0d90)","28.10.2020 11:06:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:46 - with parameters: ","28.10.2020 11:06:46 - etf.testcases = *","28.10.2020 11:06:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:46 - Setting state to CREATED","28.10.2020 11:06:46 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:46 - Starting TestRun.5b0a94c9-969e-418e-9ffe-86bf617c5cab at 2020-10-28T11:06:48Z","28.10.2020 11:06:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:48 - Project Properties: ","28.10.2020 11:06:48 - etf.testcases - * ","28.10.2020 11:06:48 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:48 - username - ","28.10.2020 11:06:48 - authUser - ","28.10.2020 11:06:48 - authMethod - basic ","28.10.2020 11:06:48 - TestRunTask initialized","28.10.2020 11:07:00 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:07:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:35.466 retry condition not satisfied: response.val == response.max
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:04:45.770 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:47.011 response time in milliseconds: 1240.25 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:04:46 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 1642232B6A073764 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:04:47.013 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:10:54.450 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:54.837 response time in milliseconds: 387.11 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:54 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:10:54.837 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:25.464 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/top10nlv2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:25.867 response time in milliseconds: 402.85 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:25 GMT 1 < ETag: "2b852-5af58ad5c5979-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:44 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:14:25.869 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:16:56.516 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:57.301 response time in milliseconds: 784.91 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:57 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 164223D57942815E 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:16:57.301 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:06:13.081 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:13.502 response time in milliseconds: 420.65 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:06:12 GMT 1 < X-Cnection: [close, close]
11:06:13.503 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:37.069 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities"}}}
11:16:37.069 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities"}}}
11:16:43.508 response time in milliseconds: 6333.42
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883803297","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:43.508 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:09:51.604 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:52.013 response time in milliseconds: 408.19 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:09:51 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:09:52.013 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:07:02.973 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:07:03.393 response time in milliseconds: 419.27 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:07:02 GMT 1 < X-Cnection: [close, close]
11:07:03.393 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:58.339 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities"}}}
11:10:58.339 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities"}}}
11:11:01.360 response time in milliseconds: 2915.41
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:11:01 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883460895","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:11:01.361 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:06:06.537 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:06:06.538 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:06:17.184 response time in milliseconds: 9901.71
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:16 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:06:14 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/f727c3f4-c957-4445-a582-447584d64552.json","testRuns":{"TestRun":{"id":"EIDf727c3f4-c957-4445-a582-447584d64552","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:06:13.91Z","testTasks":{"TestTask":{"id":"EID67550c0f-c306-4fee-b125-00d1d36d0ec2","parent":{"ref":"EIDf727c3f4-c957-4445-a582-447584d64552"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID3bd9d4cb-d612-41b6-a033-5d972420480c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID3bd9d4cb-d612-41b6-a033-5d972420480c","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:06:06.988Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:06:10.88Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:06:17.196 [print] EIDf727c3f4-c957-4445-a582-447584d64552
11:06:17.197 [print] UNDEFINED
11:06:17.197 [print] Conformance Class Download Service - Pre-defined Atom
11:06:17.197 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f727c3f4-c957-4445-a582-447584d64552.json
11:06:17.198 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/log
11:06:17.200 [print] statuspath TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552
11:06:17.200 [print] progresspath TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
11:06:17.201 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:17.716 response time in milliseconds: 514.26
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:06:17 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}
11:06:17.717 [print] {
"val": "7",
"max": "8",
"log": [
"28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)",
"28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:06:13 - Preparing 1 Test Task:",
"28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)",
"28.10.2020 11:06:13 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:06:13 - with parameters: ",
"28.10.2020 11:06:13 - etf.testcases = *",
"28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:06:13 - Setting state to CREATED",
"28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z",
"28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:06:16 - Project Properties: ",
"28.10.2020 11:06:16 - etf.testcases - * ",
"28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
"28.10.2020 11:06:16 - username - ",
"28.10.2020 11:06:16 - authUser - ",
"28.10.2020 11:06:16 - authMethod - basic ",
"28.10.2020 11:06:16 - TestRunTask initialized"
]
}
11:06:17.718 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:18.234 response time in milliseconds: 515.07
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:06:18 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}
11:06:18.236 retry condition not satisfied: response.val == response.max
11:06:18.236 sleeping before retry #1
11:06:23.237 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:23.761 response time in milliseconds: 522.87
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:06:23 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}
11:06:23.761 retry condition not satisfied: response.val == response.max
11:06:23.761 sleeping before retry #2
11:06:28.762 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:29.304 response time in milliseconds: 541.18
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:06:29 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized"]}
11:06:29.305 retry condition not satisfied: response.val == response.max
11:06:29.305 sleeping before retry #3
11:06:34.306 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:34.829 response time in milliseconds: 521.87
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:06:34 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"68","max":"69","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:06:34.833 retry condition not satisfied: response.val == response.max
11:06:34.833 sleeping before retry #4
11:06:39.834 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:40.359 response time in milliseconds: 524.20
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:06:40 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"137","max":"138","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:06:40.360 retry condition not satisfied: response.val == response.max
11:06:40.360 sleeping before retry #5
11:06:45.361 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:45.874 response time in milliseconds: 511.02
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:06:45 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:06:45.874 retry condition not satisfied: response.val == response.max
11:06:45.874 sleeping before retry #6
11:06:50.875 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:51.391 response time in milliseconds: 514.66
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:06:51 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:06:51.391 retry condition not satisfied: response.val == response.max
11:06:51.391 sleeping before retry #7
11:06:56.393 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:56.918 response time in milliseconds: 524.19
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:06:56 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:06:56.924 retry condition not satisfied: response.val == response.max
11:06:56.925 sleeping before retry #8
11:07:01.926 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:02.441 response time in milliseconds: 511.39
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:07:02 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:02.441 retry condition not satisfied: response.val == response.max
11:07:02.441 sleeping before retry #9
11:07:07.442 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:07.955 response time in milliseconds: 510.66
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:07:07 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:07.957 retry condition not satisfied: response.val == response.max
11:07:07.957 sleeping before retry #10
11:07:12.979 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:13.491 response time in milliseconds: 510.92
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:07:13 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:13.491 retry condition not satisfied: response.val == response.max
11:07:13.491 sleeping before retry #11
11:07:18.492 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:21.857 response time in milliseconds: 3364.36
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:07:21 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:07:21.857 retry condition not satisfied: response.val == response.max
11:07:21.857 sleeping before retry #12
11:07:26.858 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:27.500 response time in milliseconds: 640.88
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:07:27 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:27.500 retry condition not satisfied: response.val == response.max
11:07:27.500 sleeping before retry #13
11:07:32.501 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:33.029 response time in milliseconds: 523.69
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:07:32 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:33.029 retry condition not satisfied: response.val == response.max
11:07:33.029 sleeping before retry #14
11:07:38.031 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:38.547 response time in milliseconds: 509.85
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:07:38 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:38.549 retry condition not satisfied: response.val == response.max
11:07:38.549 sleeping before retry #15
11:07:43.550 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:44.224 response time in milliseconds: 672.81
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:07:44 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:44.233 retry condition not satisfied: response.val == response.max
11:07:44.233 sleeping before retry #16
11:07:49.234 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:49.763 response time in milliseconds: 524.55
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:07:49 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:49.764 retry condition not satisfied: response.val == response.max
11:07:49.764 sleeping before retry #17
11:07:54.765 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:07:55.291 response time in milliseconds: 524.58
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:07:55 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:07:55.291 retry condition not satisfied: response.val == response.max
11:07:55.291 sleeping before retry #18
11:08:00.292 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:00.806 response time in milliseconds: 512.86
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:08:00 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:00.812 retry condition not satisfied: response.val == response.max
11:08:00.812 sleeping before retry #19
11:08:05.813 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf727c3f4-c957-4445-a582-447584d64552/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:08:06.335 response time in milliseconds: 520.42
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:08:06 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:06:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:06:13 UTC 2020)","28.10.2020 11:06:13 - Resolving Executable Test Suite dependencies","28.10.2020 11:06:13 - Preparing 1 Test Task:","28.10.2020 11:06:13 - TestTask 1 (67550c0f-c306-4fee-b125-00d1d36d0ec2)","28.10.2020 11:06:13 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:06:13 - with parameters: ","28.10.2020 11:06:13 - etf.testcases = *","28.10.2020 11:06:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:06:13 - Setting state to CREATED","28.10.2020 11:06:13 - Changed state from CREATED to INITIALIZING","28.10.2020 11:06:14 - Starting TestRun.f727c3f4-c957-4445-a582-447584d64552 at 2020-10-28T11:06:16Z","28.10.2020 11:06:16 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:06:16 - Project Properties: ","28.10.2020 11:06:16 - etf.testcases - * ","28.10.2020 11:06:16 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:06:16 - username - ","28.10.2020 11:06:16 - authUser - ","28.10.2020 11:06:16 - authMethod - basic ","28.10.2020 11:06:16 - TestRunTask initialized","28.10.2020 11:06:33 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:06:38 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:07:25 ERROR Response did not meet SLA 32230/30000","28.10.2020 11:07:25 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:07:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:08:06.335 retry condition not satisfied: response.val == response.max
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:21.560 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities"}}}
11:12:21.561 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities"}}}
11:12:23.163 response time in milliseconds: 1495.52
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:22 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883542989","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:12:23.164 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:07:04.035 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/bzk/bro-bodemkaart/wms/v1_0?request=GetCapabilities&service=wms 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:07:04.473 response time in milliseconds: 437.02 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:07:04 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:07:04.473 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:10:30.380 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:30.780 response time in milliseconds: 399.35 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:30 GMT 1 < X-Cnection: [close, close]
11:10:30.780 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:56.026 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities"}}}
11:15:56.027 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities"}}}
11:15:59.765 response time in milliseconds: 3631.10
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:59 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883759592","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:59.766 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:40.414 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:40.820 response time in milliseconds: 405.31 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:40 GMT 1 < ETag: "1943a-5af58a6554f7f-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:10:40.820 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:04.837 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities"}}}
11:09:04.838 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 296
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities"}}}
11:09:06.816 response time in milliseconds: 1873.54
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:06 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883346639","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:09:06.817 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:11.249 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities"}}}
11:15:11.251 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities"}}}
11:15:13.931 response time in milliseconds: 2574.25
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:13 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883713755","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:13.931 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:12:44.082 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:44.481 response time in milliseconds: 398.64 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:12:44 GMT 1 < X-Cnection: [close, close]
11:12:44.481 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:04:41.993 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/wms/v1_0?service=WMS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:42.425 response time in milliseconds: 430.64 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:04:42 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:04:42.425 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:12:45.981 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/wko/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:46.474 response time in milliseconds: 493.16 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: text/html;charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:12:46 GMT 1 < X-Cnection: [close, close]
11:12:46.475 assertion failed: path: $['Content-Type'][0], actual: 'text/html;charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:43.820 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities"}}}
11:12:43.821 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities"}}}
11:12:51.529 response time in milliseconds: 7602.41
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:51 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883571359","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:12:51.529 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:55.261 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:55.654 response time in milliseconds: 392.67 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:55 GMT 1 < ETag: "19004-5af58ad51b2ef-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:10:55.654 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:09:32.724 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:33.122 response time in milliseconds: 397.89 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:33 GMT 1 < ETag: "18b3f-5af58a64dbdf8-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:09:33.122 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:38.096 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities"}}}
11:10:38.096 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities"}}}
11:10:39.987 response time in milliseconds: 1785.65
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:39 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883439811","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:39.988 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:44.569 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/top10nlv2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:44.965 response time in milliseconds: 395.97 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:44 GMT 1 < ETag: "2b852-5af58a6649d86-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:47 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:16:44.967 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:57.913 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS"}}}
11:13:57.914 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS"}}}
11:14:00.994 response time in milliseconds: 2974.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:00 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883640824","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:14:00.994 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:14:42.610 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:43.025 response time in milliseconds: 414.08 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:42 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 164223B6411EF6B0 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:14:43.025 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:52.025 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities"}}}
11:09:52.025 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities"}}}
11:10:03.641 response time in milliseconds: 11510.20
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883403471","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:03.641 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:45.403 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:45.810 response time in milliseconds: 406.91 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:45 GMT 1 < ETag: "18202-5af58ad52cc2e-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:16:45.810 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:10:37.695 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rdinfo/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:38.085 response time in milliseconds: 389.15 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:38 GMT 1 < X-Cnection: [close, close]
11:10:38.089 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:25.451 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities"}}}
11:15:25.451 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities"}}}
11:15:27.017 response time in milliseconds: 1460.36
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:26 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883726851","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:27.017 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:06:36.493 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:36.898 response time in milliseconds: 404.29 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:06:36 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:06:36.899 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:40.526 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS"}}}
11:16:40.527 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS"}}}
11:16:43.741 response time in milliseconds: 3107.79
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883803574","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:43.742 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:44.739 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities"}}}
11:16:44.739 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities"}}}
11:16:48.137 response time in milliseconds: 3292.23
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:47 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883807972","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:48.137 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:15.664 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:16.058 response time in milliseconds: 393.60 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:16 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:10:16.058 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:36.673 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/wms/v1_0?service=WMS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:37.061 response time in milliseconds: 388.42 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:37 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:37.062 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:22.631 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:10:22.633 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:10:29.962 response time in milliseconds: 7223.95
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:29 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883429792","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:29.963 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:05:26.827 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:05:27.229 response time in milliseconds: 402.03 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:05:27 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:05:27.230 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:18.001 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities"}}}
11:12:18.001 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities"}}}
11:12:19.675 response time in milliseconds: 1566.61
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:19 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883539503","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:12:19.675 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:09:03.574 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:03.986 response time in milliseconds: 411.81 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:09:03 GMT 1 < X-Cnection: [close, close]
11:09:03.989 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:30.661 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS"}}}
11:09:30.662 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS"}}}
11:09:32.313 response time in milliseconds: 1545.71
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883372135","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:09:32.313 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:18.578 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:19.039 response time in milliseconds: 460.77 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:19 GMT 1 < ETag: "6b28-5af58a658d5db-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:10:19.043 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:09:29.291 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:29.722 response time in milliseconds: 430.11 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:28 GMT 1 < X-Cnection: [close, close]
11:09:29.725 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:31.603 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS"}}}
11:10:31.605 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 285
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS"}}}
11:10:36.434 response time in milliseconds: 4721.21
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:36 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883436225","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:36.434 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:49.106 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:50.434 response time in milliseconds: 1327.98 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:50 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:50.434 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:39.381 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:14:39.381 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:14:45.437 response time in milliseconds: 5309.79
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:44 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:42 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/7e06ab19-2634-43be-b456-026fb36f2366.json","testRuns":{"TestRun":{"id":"EID7e06ab19-2634-43be-b456-026fb36f2366","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:41.877Z","testTasks":{"TestTask":{"id":"EID14cd4eef-b376-41fb-94af-ecd67dfc7b00","parent":{"ref":"EID7e06ab19-2634-43be-b456-026fb36f2366"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID87a6f209-5e5f-4cba-a717-859932a7f3fb"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID87a6f209-5e5f-4cba-a717-859932a7f3fb","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:39.826Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:41.493Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:14:45.440 [print] EID7e06ab19-2634-43be-b456-026fb36f2366
11:14:45.440 [print] UNDEFINED
11:14:45.440 [print] Conformance Class Download Service - Pre-defined Atom
11:14:45.440 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/7e06ab19-2634-43be-b456-026fb36f2366.json
11:14:45.440 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/log
11:14:45.440 [print] statuspath TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366
11:14:45.440 [print] progresspath TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
11:14:45.441 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:45.962 response time in milliseconds: 520.43
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:45 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized"]}
11:14:45.962 [print] {
"val": "21",
"max": "22",
"log": [
"28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)",
"28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:14:41 - Preparing 1 Test Task:",
"28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)",
"28.10.2020 11:14:41 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:14:41 - with parameters: ",
"28.10.2020 11:14:41 - etf.testcases = *",
"28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:14:41 - Setting state to CREATED",
"28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z",
"28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:14:44 - Project Properties: ",
"28.10.2020 11:14:44 - etf.testcases - * ",
"28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
"28.10.2020 11:14:44 - username - ",
"28.10.2020 11:14:44 - authUser - ",
"28.10.2020 11:14:44 - authMethod - basic ",
"28.10.2020 11:14:44 - TestRunTask initialized"
]
}
11:14:45.963 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:46.484 response time in milliseconds: 521.38
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:46 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized"]}
11:14:46.485 retry condition not satisfied: response.val == response.max
11:14:46.485 sleeping before retry #1
11:14:51.486 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:57.045 response time in milliseconds: 5558.42
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:56 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:14:57.045 retry condition not satisfied: response.val == response.max
11:14:57.045 sleeping before retry #2
11:15:02.046 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:02.549 response time in milliseconds: 502.79
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:15:02 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:02.550 retry condition not satisfied: response.val == response.max
11:15:02.550 sleeping before retry #3
11:15:07.551 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:08.071 response time in milliseconds: 519.80
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:15:08 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:08.077 retry condition not satisfied: response.val == response.max
11:15:08.077 sleeping before retry #4
11:15:13.078 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:13.588 response time in milliseconds: 509.75
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:15:13 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:13.594 retry condition not satisfied: response.val == response.max
11:15:13.594 sleeping before retry #5
11:15:18.594 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:19.119 response time in milliseconds: 524.72
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:15:19 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:19.120 retry condition not satisfied: response.val == response.max
11:15:19.120 sleeping before retry #6
11:15:24.120 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:24.646 response time in milliseconds: 525.27
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:15:24 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:24.646 retry condition not satisfied: response.val == response.max
11:15:24.646 sleeping before retry #7
11:15:29.647 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:30.159 response time in milliseconds: 511.42
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:15:30 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:30.166 retry condition not satisfied: response.val == response.max
11:15:30.166 sleeping before retry #8
11:15:35.167 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:35.685 response time in milliseconds: 515.01
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:15:35 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:35.686 retry condition not satisfied: response.val == response.max
11:15:35.686 sleeping before retry #9
11:15:40.686 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:41.205 response time in milliseconds: 518.50
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:15:41 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:41.205 retry condition not satisfied: response.val == response.max
11:15:41.205 sleeping before retry #10
11:15:46.206 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:48.987 response time in milliseconds: 2779.93
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:15:48 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:15:48.987 retry condition not satisfied: response.val == response.max
11:15:48.987 sleeping before retry #11
11:15:53.988 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:54.499 response time in milliseconds: 510.84
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:15:54 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:15:54.500 retry condition not satisfied: response.val == response.max
11:15:54.500 sleeping before retry #12
11:15:59.501 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:00.030 response time in milliseconds: 529.12
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:15:59 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:16:00.031 retry condition not satisfied: response.val == response.max
11:16:00.031 sleeping before retry #13
11:16:05.031 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:05.536 response time in milliseconds: 504.36
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:16:05 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:16:05.536 retry condition not satisfied: response.val == response.max
11:16:05.536 sleeping before retry #14
11:16:10.538 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:11.047 response time in milliseconds: 508.42
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:16:10 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:16:11.047 retry condition not satisfied: response.val == response.max
11:16:11.048 sleeping before retry #15
11:16:16.048 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:16.567 response time in milliseconds: 517.80
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:16:16 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:16:16.567 retry condition not satisfied: response.val == response.max
11:16:16.567 sleeping before retry #16
11:16:21.568 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:22.078 response time in milliseconds: 509.31
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:16:22 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:16:22.080 retry condition not satisfied: response.val == response.max
11:16:22.081 sleeping before retry #17
11:16:27.081 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:27.604 response time in milliseconds: 519.06
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:16:27 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:16:27.605 retry condition not satisfied: response.val == response.max
11:16:27.605 sleeping before retry #18
11:16:32.605 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:33.116 response time in milliseconds: 510.25
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:16:33 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:16:31 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:16:33.116 retry condition not satisfied: response.val == response.max
11:16:33.116 sleeping before retry #19
11:16:38.117 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID7e06ab19-2634-43be-b456-026fb36f2366/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:16:38.638 response time in milliseconds: 520.87
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:16:38 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:14:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:41 UTC 2020)","28.10.2020 11:14:41 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:41 - Preparing 1 Test Task:","28.10.2020 11:14:41 - TestTask 1 (14cd4eef-b376-41fb-94af-ecd67dfc7b00)","28.10.2020 11:14:41 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:41 - with parameters: ","28.10.2020 11:14:41 - etf.testcases = *","28.10.2020 11:14:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:41 - Setting state to CREATED","28.10.2020 11:14:41 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:42 - Starting TestRun.7e06ab19-2634-43be-b456-026fb36f2366 at 2020-10-28T11:14:44Z","28.10.2020 11:14:44 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:44 - Project Properties: ","28.10.2020 11:14:44 - etf.testcases - * ","28.10.2020 11:14:44 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:44 - username - ","28.10.2020 11:14:44 - authUser - ","28.10.2020 11:14:44 - authMethod - basic ","28.10.2020 11:14:44 - TestRunTask initialized","28.10.2020 11:14:50 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:53 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:15:53 ERROR Response did not meet SLA 40909/30000","28.10.2020 11:15:53 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:15:56 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:16:31 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:16:38.643 retry condition not satisfied: response.val == response.max
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:05:59.572 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs"}}}
11:05:59.573 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs"}}}
11:06:06.519 response time in milliseconds: 6839.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:06 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883166345","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:06:06.521 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:08.624 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:09:08.626 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:09:15.342 response time in milliseconds: 6613.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:15 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883355175","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:09:15.343 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:35.295 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS"}}}
11:15:35.296 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS"}}}
11:15:39.942 response time in milliseconds: 4540.98
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:39 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883739766","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:39.943 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:12:15.768 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:16.390 response time in milliseconds: 621.52 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:12:16 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:12:16.392 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:02.914 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:03.309 response time in milliseconds: 394.46 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:13:03 GMT 1 < ETag: "1867c-5af58a654ab6f-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:13:03.312 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:07:01.027 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:07:01.710 response time in milliseconds: 682.08 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:07:01 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 1642234AD2AEA1BD 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:07:01.710 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:06:35.627 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:36.029 response time in milliseconds: 401.33 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 5631 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:06:35 GMT 1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1" 1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 16422344DDD5D19C 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:06:36.030 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:11:28.318 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:11:29.112 response time in milliseconds: 793.66 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 5631 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:11:28 GMT 1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1" 1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 1642238914FD5CC6 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:11:29.113 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:04:51.994 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:52.411 response time in milliseconds: 416.98 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:04:52 GMT 1 < ETag: "1840e-5af58ad506ad0-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:04:52.414 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:16:48.565 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:48.985 response time in milliseconds: 417.61 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:48 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:48.986 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:06:03.907 request: 1 > HEAD https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: service.pdok.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:04.320 response time in milliseconds: 412.71 1 < 200 1 < Access-Control-Allow-Headers: Content-Type 1 < Access-Control-Allow-Method: GET,POST,OPTIONS 1 < Access-Control-Allow-Origin: * 1 < Content-Length: 16933 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:06:04 GMT 1 < Server: lighttpd/1.4.53 1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
11:06:04.320 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:06:05.074 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities"}}}
11:06:05.079 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities"}}}
11:06:08.203 response time in milliseconds: 3018.77
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:08 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883168023","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:06:08.205 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:13:57.463 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/kadastralekaart/wms/v4_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:57.904 response time in milliseconds: 441.38 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 36659 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:57 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:57.907 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:19.979 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:09:19.980 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:09:50.328 java.net.SocketTimeoutException: Read timed out, http call failed after 30347 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:09:50.328 http request failed:
java.net.SocketTimeoutException: Read timed out
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:27.301 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS"}}}
11:13:27.302 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 283
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS"}}}
11:13:48.527 response time in milliseconds: 21121.69
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:48 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883628360","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:48.528 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:47.068 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/luchtfoto/infrarood/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:47.467 response time in milliseconds: 398.26 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:47 GMT 1 < ETag: "22af-59fdeb24e1400-gzip" 1 < Last-Modified: Mon, 02 Mar 2020 12:55:06 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:16:47.469 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:09:19.233 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/wms/v1_0?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:19.971 response time in milliseconds: 737.66 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:09:19 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:09:19.971 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:11:04.772 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:11:05.186 response time in milliseconds: 413.97 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:11:05 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:11:05.190 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:56.915 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:57.326 response time in milliseconds: 410.61 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:57 GMT 1 < ETag: "18664-5af58ad4f2e69-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:57.329 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:10:36.858 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:37.264 response time in milliseconds: 405.58 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:37 GMT 1 < X-Cnection: [close, close]
11:10:37.267 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:34.274 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/top10nlv2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:34.662 response time in milliseconds: 387.33 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:34 GMT 1 < ETag: "2b852-5af58a6649d86-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:47 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:14:34.664 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:15.611 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS"}}}
11:15:15.611 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS"}}}
11:15:18.517 response time in milliseconds: 2800.80
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:18 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883718337","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:18.518 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:54.355 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:12:54.356 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:13:24.731 java.net.SocketTimeoutException: Read timed out, http call failed after 30375 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:13:24.731 http request failed:
java.net.SocketTimeoutException: Read timed out
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:50.845 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:51.495 response time in milliseconds: 647.06 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:51 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:51.499 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:26.893 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}}}
11:12:26.894 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}}}
11:12:57.258 java.net.SocketTimeoutException: Read timed out, http call failed after 30363 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:12:57.258 http request failed:
java.net.SocketTimeoutException: Read timed out
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:00.521 [print] testing url:https://geodata.nationaalgeoregister.nl/inspire/cp/wms?request=GetCapabilities
11:16:00.522 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/cp/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:00.910 response time in milliseconds: 387.70 1 < 404 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/json;charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:59 GMT 1 < Transfer-Encoding: chunked 1 < X-Cnection: [close, close]
11:16:00.913 status code was: 404, expected: 200, response time: 388, url: https://geodata.nationaalgeoregister.nl/inspire/cp/wms?request=GetCapabilities, response:
11:16:00.917 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/cp/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:01.343 response time in milliseconds: 426.07 1 < 404 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/json;charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:01 GMT 1 < Transfer-Encoding: chunked 1 < X-Cnection: [close, close]
11:16:01.343 status code was: 404, expected: 200, response time: 426, url: https://geodata.nationaalgeoregister.nl/inspire/cp/wms?request=GetCapabilities, response:
11:06:08.670 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:09.057 response time in milliseconds: 386.67 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:06:09 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:06:09.061 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:54.786 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:55.181 response time in milliseconds: 394.91 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:13:55 GMT 1 < ETag: "1a2f9-5af58a1acea00-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:41:28 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:13:55.183 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:52.125 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:52.530 response time in milliseconds: 405.14 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 7165 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:12:52 GMT 1 < Etag: "a477efe52b464353930e4767fc4d3506-1" 1 < Last-Modified: Tue, 12 Nov 2019 10:10:42 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 1642239C87381155 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:12:52.531 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:03.086 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS"}}}
11:14:03.086 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 315
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS"}}}
11:14:06.119 response time in milliseconds: 2925.73
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883645948","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:14:06.119 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:13:49.820 request: 1 > HEAD https://service.pdok.nl/hwh/hydrografie/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: service.pdok.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:50.182 response time in milliseconds: 361.42 1 < 200 1 < Access-Control-Allow-Headers: Content-Type 1 < Access-Control-Allow-Method: GET,POST,OPTIONS 1 < Access-Control-Allow-Origin: * 1 < Content-Length: 15002 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:50 GMT 1 < Server: lighttpd/1.4.53 1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
11:13:50.182 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:16.494 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:16.886 response time in milliseconds: 391.83 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:16 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:15:16.887 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:29.209 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:29.607 response time in milliseconds: 398.34 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:29 GMT 1 < ETag: "6b28-5af58ad5669f4-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:14:29.610 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:09:56.072 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:56.481 response time in milliseconds: 408.31 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:56 GMT 1 < ETag: "1abe8-5af58a6516b63-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:09:56.482 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:05:28.105 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}}}
11:05:28.109 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 252
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}}}
11:05:58.442 java.net.SocketTimeoutException: Read timed out, http call failed after 30333 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:05:58.443 http request failed:
java.net.SocketTimeoutException: Read timed out
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:33.984 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:34.413 response time in milliseconds: 428.40 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:34 GMT 1 < ETag: "19397-5af58a6558dff-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:34.414 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:13:19.649 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:20.044 response time in milliseconds: 393.82 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:13:19 GMT 1 < ETag: "184b1-5af58a6522eb4-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:13:20.044 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:05:27.676 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ahn1/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:05:28.090 response time in milliseconds: 413.56 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:05:28 GMT 1 < ETag: "65ee-5af58a6456538-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:05:28.091 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:12:20.119 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:20.537 response time in milliseconds: 417.89 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:12:20 GMT 1 < X-Cnection: [close, close]
11:12:20.538 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:10:43.472 [print] testing url:https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?
11:10:43.473 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs? 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:43.871 response time in milliseconds: 398.04 1 < 400 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:43 GMT 1 < X-Cnection: [close, close]
11:10:43.871 status code was: 400, expected: 200, response time: 398, url: https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?, response:
11:10:43.876 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs? 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:44.286 response time in milliseconds: 408.95 1 < 400 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:43 GMT 1 < X-Cnection: [close, close]
11:10:44.290 status code was: 400, expected: 200, response time: 409, url: https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?, response:
11:11:01.777 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:11:02.178 response time in milliseconds: 401.27 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:11:02 GMT 1 < ETag: "18e6e-5af58ad5256ff-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:11:02.180 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:13.419 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:13.852 response time in milliseconds: 432.23 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:12:13 GMT 1 < X-Cnection: [close, close]
11:12:13.852 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:17.514 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities"}}}
11:13:17.515 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 282
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities"}}}
11:13:19.197 response time in milliseconds: 1576.88
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:19 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883599024","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:19.204 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:51.928 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:52.320 response time in milliseconds: 391.46 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:52 GMT 1 < ETag: "19a18-5af58ad529196-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:16:52.322 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:14:43.472 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:43.872 response time in milliseconds: 400.00 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:43 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:14:43.876 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:17.083 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/luchtfoto/infrarood/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:17.495 response time in milliseconds: 411.78 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:13:17 GMT 1 < ETag: "22af-59fdeb7b20bac-gzip" 1 < Last-Modified: Mon, 02 Mar 2020 12:56:37 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:13:17.498 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:23.834 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities"}}}
11:16:23.838 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities"}}}
11:16:32.319 response time in milliseconds: 8375.63
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883791723","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:32.319 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:20.912 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities"}}}
11:13:20.913 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities"}}}
11:13:22.248 response time in milliseconds: 1331.72
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:22 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883602177","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:22.248 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:33.444 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:33.861 response time in milliseconds: 417.12 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:16:33 GMT 1 < X-Cnection: [close, close]
11:16:33.866 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:28.723 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS"}}}
11:15:28.723 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 292
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS"}}}
11:15:30.288 response time in milliseconds: 1457.28
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:30 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883730115","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:30.288 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:13:38.756 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ahn2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:39.153 response time in milliseconds: 396.59 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:13:39 GMT 1 < ETag: "51e0-5af58ad48a68c-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:42 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:13:39.153 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:04:44.404 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/wms/v1_0?service=WMS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:45.315 response time in milliseconds: 907.23 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:04:45 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:04:45.316 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:55.657 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities"}}}
11:13:55.658 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities"}}}
11:13:59.320 response time in milliseconds: 3554.69
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:59 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883639148","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:59.320 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:09.207 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:09.605 response time in milliseconds: 397.15 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:09 GMT 1 < ETag: "1a31b-5af58a64f34f9-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:09.605 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:09:07.252 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:07.665 response time in milliseconds: 411.70 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:07 GMT 1 < X-Cnection: [close, close]
11:09:07.666 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:15.350 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities"}}}
11:09:15.351 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities"}}}
11:09:17.491 response time in milliseconds: 2031.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:17 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883357323","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:09:17.491 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:08:49.662 request: 1 > HEAD https://service.pdok.nl/cbs/pd/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: service.pdok.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:08:50.029 response time in milliseconds: 366.52 1 < 200 1 < Access-Control-Allow-Headers: Content-Type 1 < Access-Control-Allow-Method: GET,POST,OPTIONS 1 < Access-Control-Allow-Origin: * 1 < Content-Length: 15709 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:08:49 GMT 1 < Server: lighttpd/1.4.53 1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
11:08:50.031 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:24.019 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:13:24.020 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:13:54.361 java.net.SocketTimeoutException: Read timed out, http call failed after 30341 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
11:13:54.362 http request failed:
java.net.SocketTimeoutException: Read timed out
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:17.728 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:18.135 response time in milliseconds: 406.21 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:18 GMT 1 < X-Cnection: [close, close]
11:10:18.137 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:09:50.749 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:51.151 response time in milliseconds: 402.64 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 5631 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:51 GMT 1 < Etag: "49a033f09fcd1b18ab009d70bb5f15ba-1" 1 < Last-Modified: Tue, 08 Oct 2019 09:07:54 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 164223724C28F729 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:09:51.152 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:14:32.633 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/schelpdierwater/wms?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:33.060 response time in milliseconds: 426.75 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:33 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:14:33.060 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:55.620 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/luchtfoto/infrarood/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:56.017 response time in milliseconds: 396.94 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:55 GMT 1 < ETag: "22af-59fdeb24e1400-gzip" 1 < Last-Modified: Mon, 02 Mar 2020 12:55:06 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:56.018 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:11:29.562 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:11:29.958 response time in milliseconds: 394.99 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:11:29 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:11:29.958 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:06.532 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wms?request=GetCapabilities&service=wms 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:06.927 response time in milliseconds: 394.71 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:06 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:14:06.928 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:37.546 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:38.322 response time in milliseconds: 775.72 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:38 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:38.323 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:12:26.494 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:26.883 response time in milliseconds: 388.70 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:12:26 GMT 1 < X-Cnection: [close, close]
11:12:26.885 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:06:04.729 request: 1 > HEAD https://service.pdok.nl/rce/ps-ch/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: service.pdok.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:05.104 response time in milliseconds: 374.90 1 < 200 1 < Access-Control-Allow-Headers: Content-Type 1 < Access-Control-Allow-Method: GET,POST,OPTIONS 1 < Access-Control-Allow-Origin: * 1 < Content-Length: 10171 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:06:05 GMT 1 < Server: lighttpd/1.4.53 1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
11:06:05.104 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:32.589 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:32.994 response time in milliseconds: 405.67 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:32 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:32.995 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:09:36.041 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:36.473 response time in milliseconds: 432.57 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:09:36 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:09:36.477 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:04:43.264 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:43.685 response time in milliseconds: 421.38 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:04:43 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:04:43.686 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:16.228 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:16.655 response time in milliseconds: 424.62 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:16 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:16.656 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:04:39.082 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rvo/invasieve-exoten/wms/v1_0?request=GetCapabilities&service=wms 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:39.531 response time in milliseconds: 444.91 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:04:39 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:04:39.534 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:24.833 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities"}}}
11:12:24.834 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities"}}}
11:12:26.031 response time in milliseconds: 1179.64
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:25 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883545948","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:12:26.031 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:04:47.932 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities"}}}
11:04:47.936 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 282
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities"}}}
11:04:51.559 response time in milliseconds: 3517.01
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:51 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883091386","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:04:51.567 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:19.864 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:20.271 response time in milliseconds: 406.22 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:20 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:15:20.271 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:56.541 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:57.016 response time in milliseconds: 474.89 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 22281 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:56 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:57.018 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:59.756 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:00.165 response time in milliseconds: 408.59 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:00 GMT 1 < ETag: "18178-5af58ad4f78a0-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:14:00.166 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:40.827 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?"}}}
11:10:40.828 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 257
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?"}}}
11:10:43.459 response time in milliseconds: 2526.42
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883443273","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:43.461 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:16.073 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:10:16.074 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:10:17.282 response time in milliseconds: 1206.63
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:17 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883417218","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:17.283 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:14.364 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:14.765 response time in milliseconds: 401.34 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:14 GMT 1 < ETag: "18765-5af58a64cc00f-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:14.766 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:58.496 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/top10nlv2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:58.894 response time in milliseconds: 398.42 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:12:58 GMT 1 < ETag: "2b852-5af58a6649d86-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:47 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:12:58.895 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:14:38.971 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:39.372 response time in milliseconds: 401.00 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:39 GMT 1 < ETag: "6b28-5af58ad5669f4-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:14:39.373 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:06:05.526 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:06.002 response time in milliseconds: 476.21 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:06:05 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:06:06.003 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:04:44.242 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:04:44.245 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:04:49.864 response time in milliseconds: 4842.85
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:04:49 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:04:47 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ccccbbb9-d6ca-4f82-b144-0cafe77ceb89.json","testRuns":{"TestRun":{"id":"EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:04:46.958Z","testTasks":{"TestTask":{"id":"EIDc15fdccb-250c-4144-be65-a85fba8c9483","parent":{"ref":"EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID99845b30-ee48-4029-be20-168de906f849"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID99845b30-ee48-4029-be20-168de906f849","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:04:44.697Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:04:46.499Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:04:49.872 [print] EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89
11:04:49.873 [print] UNDEFINED
11:04:49.874 [print] Conformance Class Download Service - Pre-defined Atom
11:04:49.875 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ccccbbb9-d6ca-4f82-b144-0cafe77ceb89.json
11:04:49.876 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/log
11:04:49.877 [print] statuspath TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89
11:04:49.880 [print] progresspath TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
11:04:49.881 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:04:50.399 response time in milliseconds: 516.30
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:04:50 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized"]}
11:04:50.399 [print] {
"val": "12",
"max": "13",
"log": [
"28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)",
"28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:04:46 - Preparing 1 Test Task:",
"28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)",
"28.10.2020 11:04:46 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:04:46 - with parameters: ",
"28.10.2020 11:04:46 - etf.testcases = *",
"28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:04:47 - Setting state to CREATED",
"28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z",
"28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:04:49 - Project Properties: ",
"28.10.2020 11:04:49 - etf.testcases - * ",
"28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
"28.10.2020 11:04:49 - username - ",
"28.10.2020 11:04:49 - authUser - ",
"28.10.2020 11:04:49 - authMethod - basic ",
"28.10.2020 11:04:49 - TestRunTask initialized"
]
}
11:04:50.401 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:04:50.920 response time in milliseconds: 518.21
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:04:50 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized"]}
11:04:50.921 retry condition not satisfied: response.val == response.max
11:04:50.921 sleeping before retry #1
11:04:55.922 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:04:56.435 response time in milliseconds: 511.70
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:04:56 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized"]}
11:04:56.436 retry condition not satisfied: response.val == response.max
11:04:56.436 sleeping before retry #2
11:05:01.437 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:01.965 response time in milliseconds: 524.00
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:05:01 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:05:01.965 retry condition not satisfied: response.val == response.max
11:05:01.965 sleeping before retry #3
11:05:06.967 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:07.490 response time in milliseconds: 522.61
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:05:07 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:05:07.491 retry condition not satisfied: response.val == response.max
11:05:07.491 sleeping before retry #4
11:05:12.492 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:13.021 response time in milliseconds: 527.15
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:05:12 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"160","max":"161","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:13.021 retry condition not satisfied: response.val == response.max
11:05:13.021 sleeping before retry #5
11:05:18.023 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:18.536 response time in milliseconds: 512.61
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:05:18 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:18.537 retry condition not satisfied: response.val == response.max
11:05:18.537 sleeping before retry #6
11:05:23.538 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:24.079 response time in milliseconds: 534.27
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:05:24 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:24.079 retry condition not satisfied: response.val == response.max
11:05:24.080 sleeping before retry #7
11:05:29.081 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:29.595 response time in milliseconds: 513.55
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:05:29 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:29.596 retry condition not satisfied: response.val == response.max
11:05:29.596 sleeping before retry #8
11:05:34.597 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:35.110 response time in milliseconds: 511.62
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:05:35 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:35.111 retry condition not satisfied: response.val == response.max
11:05:35.111 sleeping before retry #9
11:05:40.113 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:40.635 response time in milliseconds: 521.72
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:05:40 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:40.636 retry condition not satisfied: response.val == response.max
11:05:40.636 sleeping before retry #10
11:05:45.637 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:46.375 response time in milliseconds: 736.45
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:05:46 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:46.375 retry condition not satisfied: response.val == response.max
11:05:46.375 sleeping before retry #11
11:05:51.377 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:51.929 response time in milliseconds: 549.60
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:05:51 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:05:51.929 retry condition not satisfied: response.val == response.max
11:05:51.929 sleeping before retry #12
11:05:56.931 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:05:57.481 response time in milliseconds: 545.87
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:05:57 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:05:57.481 retry condition not satisfied: response.val == response.max
11:05:57.481 sleeping before retry #13
11:06:02.483 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:03.011 response time in milliseconds: 527.23
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:06:02 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:06:03.019 retry condition not satisfied: response.val == response.max
11:06:03.019 sleeping before retry #14
11:06:08.021 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:08.525 response time in milliseconds: 503.72
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:06:08 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:06:08.526 retry condition not satisfied: response.val == response.max
11:06:08.526 sleeping before retry #15
11:06:13.526 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:14.040 response time in milliseconds: 513.19
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:06:13 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:06:14.041 retry condition not satisfied: response.val == response.max
11:06:14.041 sleeping before retry #16
11:06:19.042 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:19.556 response time in milliseconds: 512.89
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:06:19 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:06:19.557 retry condition not satisfied: response.val == response.max
11:06:19.557 sleeping before retry #17
11:06:24.558 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:25.088 response time in milliseconds: 526.84
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:06:25 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:06:25.090 retry condition not satisfied: response.val == response.max
11:06:25.090 sleeping before retry #18
11:06:30.092 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:32.101 response time in milliseconds: 2007.29
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:06:32 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:06:32.106 retry condition not satisfied: response.val == response.max
11:06:32.106 sleeping before retry #19
11:06:37.107 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDccccbbb9-d6ca-4f82-b144-0cafe77ceb89/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:06:37.725 response time in milliseconds: 614.12
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:06:37 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:04:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:04:46 UTC 2020)","28.10.2020 11:04:46 - Resolving Executable Test Suite dependencies","28.10.2020 11:04:46 - Preparing 1 Test Task:","28.10.2020 11:04:46 - TestTask 1 (c15fdccb-250c-4144-be65-a85fba8c9483)","28.10.2020 11:04:46 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:04:46 - with parameters: ","28.10.2020 11:04:46 - etf.testcases = *","28.10.2020 11:04:47 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:04:47 - Setting state to CREATED","28.10.2020 11:04:47 - Changed state from CREATED to INITIALIZING","28.10.2020 11:04:47 - Starting TestRun.ccccbbb9-d6ca-4f82-b144-0cafe77ceb89 at 2020-10-28T11:04:48Z","28.10.2020 11:04:48 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:04:49 - Project Properties: ","28.10.2020 11:04:49 - etf.testcases - * ","28.10.2020 11:04:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:04:49 - username - ","28.10.2020 11:04:49 - authUser - ","28.10.2020 11:04:49 - authMethod - basic ","28.10.2020 11:04:49 - TestRunTask initialized","28.10.2020 11:05:01 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:05:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:05:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:05:57 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:06:36 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:06:37.725 retry condition not satisfied: response.val == response.max
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:16:32.327 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities"}}}
11:16:32.331 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities"}}}
11:16:35.006 response time in milliseconds: 2571.47
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:16:34 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883794843","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:16:35.007 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:41.179 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:41.588 response time in milliseconds: 408.12 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:41 GMT 1 < X-Cnection: [close, close]
11:15:41.588 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:09.245 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities"}}}
11:12:09.246 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities"}}}
11:12:13.399 response time in milliseconds: 4047.79
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:13 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883533230","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:12:13.399 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:06:42.221 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:42.614 response time in milliseconds: 392.77 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:06:42 GMT 1 < ETag: "25c56-5af58ad50ef9f-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:06:42.615 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:14:07.389 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:07.795 response time in milliseconds: 405.64 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:14:07 GMT 1 < X-Cnection: [close, close]
11:14:07.795 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:14:28.373 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:28.757 response time in milliseconds: 384.00 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:28 GMT 1 < X-Cnection: [close, close]
11:14:28.759 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:29.616 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS"}}}
11:14:29.617 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 294
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS"}}}
11:14:31.379 response time in milliseconds: 1656.64
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:31 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883671209","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:14:31.379 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:09:04.426 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:04.827 response time in milliseconds: 400.57 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:04 GMT 1 < ETag: "6b28-5af58ad5669f4-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:09:04.829 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:06.388 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities"}}}
11:14:06.392 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities"}}}
11:14:08.019 response time in milliseconds: 1519.89
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:07 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883647848","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:14:08.019 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:06:08.233 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:09.110 response time in milliseconds: 876.72 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 11308 1 < Content-Security-Policy: block-all-mixed-content 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:06:08 GMT 1 < Etag: "6a5a193d3183c09bef2e90757c76cd43-1" 1 < Last-Modified: Wed, 20 Nov 2019 11:50:24 GMT 1 < Server: MinIO/RELEASE.2020-09-21T22-31-59Z 1 < Vary: Origin 1 < X-Amz-Bucket-Region: Amsterdam 1 < X-Amz-Request-Id: 1642233E94400A80 1 < X-Cnection: [close, close] 1 < X-Xss-Protection: 1; mode=block
11:06:09.111 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:19.053 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities"}}}
11:10:19.054 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 314
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities"}}}
11:10:20.856 response time in milliseconds: 1693.68
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:20 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883420669","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:20.863 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:12:16.401 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:12:16.401 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
11:12:42.990 response time in milliseconds: 25824.43
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:12:42 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:12:19 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/b8a35966-ea81-4b1d-937b-fbeaf005c2a1.json","testRuns":{"TestRun":{"id":"EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:12:19.143Z","testTasks":{"TestTask":{"id":"EID3985d879-8101-4ec9-9a19-8185612a02fe","parent":{"ref":"EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDb91ad571-c705-4d6a-80a8-ff61f5313416"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDb91ad571-c705-4d6a-80a8-ff61f5313416","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:12:16.843Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:12:18.567Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:12:43.007 [print] EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1
11:12:43.007 [print] UNDEFINED
11:12:43.008 [print] Conformance Class Download Service - Pre-defined Atom
11:12:43.008 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/b8a35966-ea81-4b1d-937b-fbeaf005c2a1.json
11:12:43.008 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/log
11:12:43.011 [print] statuspath TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1
11:12:43.011 [print] progresspath TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
11:12:43.012 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:43.541 response time in milliseconds: 528.57
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:12:43 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)","28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies","28.10.2020 11:12:19 - Preparing 1 Test Task:","28.10.2020 11:12:19 - TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)","28.10.2020 11:12:19 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:12:19 - with parameters: ","28.10.2020 11:12:19 - etf.testcases = *","28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:12:19 - Setting state to CREATED","28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING","28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z","28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:12:21 - Project Properties: ","28.10.2020 11:12:21 - etf.testcases - * ","28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:12:21 - username - ","28.10.2020 11:12:21 - authUser - ","28.10.2020 11:12:21 - authMethod - basic ","28.10.2020 11:12:21 - TestRunTask initialized","28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:12:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:28 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}
11:12:43.541 [print] {
"val": "148",
"max": "149",
"log": [
"28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)",
"28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:12:19 - Preparing 1 Test Task:",
"28.10.2020 11:12:19 - TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)",
"28.10.2020 11:12:19 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:12:19 - with parameters: ",
"28.10.2020 11:12:19 - etf.testcases = *",
"28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:12:19 - Setting state to CREATED",
"28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z",
"28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:12:21 - Project Properties: ",
"28.10.2020 11:12:21 - etf.testcases - * ",
"28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
"28.10.2020 11:12:21 - username - ",
"28.10.2020 11:12:21 - authUser - ",
"28.10.2020 11:12:21 - authMethod - basic ",
"28.10.2020 11:12:21 - TestRunTask initialized",
"28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes",
"28.10.2020 11:12:25 ERROR Assertion failed with error 'TR.unexpectedHtml'",
"28.10.2020 11:12:27 ERROR Assertion failed with error 'TR.unexpectedHtml'",
"28.10.2020 11:12:28 ERROR Assertion failed with error 'TR.uniqueDatasetIdentifiers'",
"28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingLinkToMetadataRecordForDownloadService'",
"28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingElement'",
"28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingElement'",
"28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingElement'",
"28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:29 ERROR Assertion failed with error 'TR.missingOneFeedEntryWithDlFile'",
"28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingElement'",
"28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingElement'",
"28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingFeedUpdatedInformation'",
"28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
"28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingLinkToRegistry'",
"28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:30 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
"28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:32 ERROR Assertion failed with error 'TR.missingFeedRootElement'",
"28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes",
"28.10.2020 11:12:32 ERROR Assertion failed with error 'TR.missingFeedRootElement'"
]
}
11:12:43.542 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:44.060 response time in milliseconds: 514.24
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:12:43 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)","28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies","28.10.2020 11:12:19 - Preparing 1 Test Task:","28.10.2020 11:12:19 - TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)","28.10.2020 11:12:19 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:12:19 - with parameters: ","28.10.2020 11:12:19 - etf.testcases = *","28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:12:19 - Setting state to CREATED","28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING","28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z","28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:12:21 - Project Properties: ","28.10.2020 11:12:21 - etf.testcases - * ","28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:12:21 - username - ","28.10.2020 11:12:21 - authUser - ","28.10.2020 11:12:21 - authMethod - basic ","28.10.2020 11:12:21 - TestRunTask initialized","28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:12:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:28 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}
11:12:44.060 retry condition not satisfied: response.val == response.max
11:12:44.060 sleeping before retry #1
11:12:49.061 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:49.590 response time in milliseconds: 524.77
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:12:49 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["28.10.2020 11:12:19 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:12:19 UTC 2020)","28.10.2020 11:12:19 - Resolving Executable Test Suite dependencies","28.10.2020 11:12:19 - Preparing 1 Test Task:","28.10.2020 11:12:19 - TestTask 1 (3985d879-8101-4ec9-9a19-8185612a02fe)","28.10.2020 11:12:19 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:12:19 - with parameters: ","28.10.2020 11:12:19 - etf.testcases = *","28.10.2020 11:12:19 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:12:19 - Setting state to CREATED","28.10.2020 11:12:19 - Changed state from CREATED to INITIALIZING","28.10.2020 11:12:19 - Starting TestRun.b8a35966-ea81-4b1d-937b-fbeaf005c2a1 at 2020-10-28T11:12:21Z","28.10.2020 11:12:21 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:12:21 - Project Properties: ","28.10.2020 11:12:21 - etf.testcases - * ","28.10.2020 11:12:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","28.10.2020 11:12:21 - username - ","28.10.2020 11:12:21 - authUser - ","28.10.2020 11:12:21 - authMethod - basic ","28.10.2020 11:12:21 - TestRunTask initialized","28.10.2020 11:12:25 ERROR Response status code:500 is not in acceptable list of status codes","28.10.2020 11:12:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","28.10.2020 11:12:28 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:29 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:29 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","28.10.2020 11:12:30 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:30 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:31 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","28.10.2020 11:12:32 ERROR Response status code:404 is not in acceptable list of status codes","28.10.2020 11:12:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}
11:12:49.590 retry condition not satisfied: response.val == response.max
11:12:49.590 sleeping before retry #2
11:12:54.591 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:56.605 response time in milliseconds: 2014.34
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:12:56 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}
11:12:56.606 retry condition satisfied
11:12:56.606 [print] {
"val": "241",
"max": "241",
"log": [
]
}
11:12:56.607 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDb8a35966-ea81-4b1d-937b-fbeaf005c2a1
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:13:04.790 response time in milliseconds: 8183.26
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:13:04 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Wed, 28 Oct 2020 11:12:47 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
11:13:04.791 [print]
11:13:04.792 [print]
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:05.158 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities"}}}
11:15:05.160 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities"}}}
11:15:08.796 response time in milliseconds: 3530.74
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:08 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883708622","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:08.797 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:09:15.947 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:16.385 response time in milliseconds: 438.14 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Disposition: inline; filename=geoserver-GetCapabilities.application 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:09:15 GMT 1 < X-Cnection: [close, close]
11:09:16.386 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:15:27.446 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:27.848 response time in milliseconds: 401.46 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:27 GMT 1 < ETag: "1ac36-5af58a651212b-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:45 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:27.848 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:45.132 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:10:45.133 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:10:56.682 response time in milliseconds: 10807.96
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:55 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:10:53 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e8cfdb4c-4f88-409f-881d-d9b4d6cc358d.json","testRuns":{"TestRun":{"id":"EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:10:52.738Z","testTasks":{"TestTask":{"id":"EIDb5246905-19de-4968-ad10-974f76c9d953","parent":{"ref":"EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID9d4b4342-3760-40ba-928a-aaf25fd9e405"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID9d4b4342-3760-40ba-928a-aaf25fd9e405","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:10:45.572Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:10:49.387Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:10:56.685 [print] EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d
11:10:56.685 [print] UNDEFINED
11:10:56.685 [print] Conformance Class Download Service - Pre-defined Atom
11:10:56.685 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e8cfdb4c-4f88-409f-881d-d9b4d6cc358d.json
11:10:56.685 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/log
11:10:56.685 [print] statuspath TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d
11:10:56.685 [print] progresspath TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
11:10:56.686 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:57.416 response time in milliseconds: 729.93
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:10:57 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized"]}
11:10:57.417 [print] {
"val": "16",
"max": "17",
"log": [
"28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)",
"28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:10:52 - Preparing 1 Test Task:",
"28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)",
"28.10.2020 11:10:52 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:10:52 - with parameters: ",
"28.10.2020 11:10:52 - etf.testcases = *",
"28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:10:52 - Setting state to CREATED",
"28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z",
"28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:10:55 - Project Properties: ",
"28.10.2020 11:10:55 - etf.testcases - * ",
"28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
"28.10.2020 11:10:55 - username - ",
"28.10.2020 11:10:55 - authUser - ",
"28.10.2020 11:10:55 - authMethod - basic ",
"28.10.2020 11:10:55 - TestRunTask initialized"
]
}
11:10:57.418 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:10:57.930 response time in milliseconds: 507.74
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:10:57 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized"]}
11:10:57.930 retry condition not satisfied: response.val == response.max
11:10:57.930 sleeping before retry #1
11:11:02.931 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:03.552 response time in milliseconds: 620.12
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:11:03 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:11:03.552 retry condition not satisfied: response.val == response.max
11:11:03.552 sleeping before retry #2
11:11:08.553 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:09.068 response time in milliseconds: 514.78
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:11:09 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"86","max":"87","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:11:09.068 retry condition not satisfied: response.val == response.max
11:11:09.068 sleeping before retry #3
11:11:14.069 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:14.603 response time in milliseconds: 532.64
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:11:14 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"167","max":"168","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:14.603 retry condition not satisfied: response.val == response.max
11:11:14.603 sleeping before retry #4
11:11:19.604 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:20.118 response time in milliseconds: 513.10
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:11:20 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:20.118 retry condition not satisfied: response.val == response.max
11:11:20.118 sleeping before retry #5
11:11:25.119 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:25.641 response time in milliseconds: 520.61
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:11:25 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:25.641 retry condition not satisfied: response.val == response.max
11:11:25.641 sleeping before retry #6
11:11:30.642 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:31.159 response time in milliseconds: 515.72
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:11:31 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:31.159 retry condition not satisfied: response.val == response.max
11:11:31.159 sleeping before retry #7
11:11:36.160 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:36.670 response time in milliseconds: 509.76
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:11:36 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:36.670 retry condition not satisfied: response.val == response.max
11:11:36.670 sleeping before retry #8
11:11:41.671 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:42.200 response time in milliseconds: 528.47
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:11:42 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:42.200 retry condition not satisfied: response.val == response.max
11:11:42.200 sleeping before retry #9
11:11:47.201 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:47.764 response time in milliseconds: 558.11
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:11:47 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:47.764 retry condition not satisfied: response.val == response.max
11:11:47.764 sleeping before retry #10
11:11:52.765 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:53.283 response time in milliseconds: 517.69
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:11:53 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:53.284 retry condition not satisfied: response.val == response.max
11:11:53.284 sleeping before retry #11
11:11:58.285 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:11:58.800 response time in milliseconds: 514.77
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:11:58 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:11:58.804 retry condition not satisfied: response.val == response.max
11:11:58.807 sleeping before retry #12
11:12:03.808 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:04.328 response time in milliseconds: 519.39
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:12:04 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:12:04.334 retry condition not satisfied: response.val == response.max
11:12:04.335 sleeping before retry #13
11:12:09.336 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:09.855 response time in milliseconds: 519.19
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:12:09 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:12:09.863 retry condition not satisfied: response.val == response.max
11:12:09.863 sleeping before retry #14
11:12:14.864 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:15.387 response time in milliseconds: 522.39
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:12:15 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:12:15.387 retry condition not satisfied: response.val == response.max
11:12:15.387 sleeping before retry #15
11:12:20.388 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:20.908 response time in milliseconds: 519.67
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:12:20 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:12:20.909 retry condition not satisfied: response.val == response.max
11:12:20.909 sleeping before retry #16
11:12:25.910 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:26.421 response time in milliseconds: 510.54
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:12:26 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:12:26.423 retry condition not satisfied: response.val == response.max
11:12:26.423 sleeping before retry #17
11:12:31.424 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:31.937 response time in milliseconds: 512.24
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:12:31 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:12:31.937 retry condition not satisfied: response.val == response.max
11:12:31.938 sleeping before retry #18
11:12:36.938 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:37.448 response time in milliseconds: 509.10
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:12:37 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:12:37.449 retry condition not satisfied: response.val == response.max
11:12:37.450 sleeping before retry #19
11:12:42.450 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe8cfdb4c-4f88-409f-881d-d9b4d6cc358d/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:12:42.986 response time in milliseconds: 528.85
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:12:42 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:10:52 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:10:52 UTC 2020)","28.10.2020 11:10:52 - Resolving Executable Test Suite dependencies","28.10.2020 11:10:52 - Preparing 1 Test Task:","28.10.2020 11:10:52 - TestTask 1 (b5246905-19de-4968-ad10-974f76c9d953)","28.10.2020 11:10:52 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:10:52 - with parameters: ","28.10.2020 11:10:52 - etf.testcases = *","28.10.2020 11:10:52 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:10:52 - Setting state to CREATED","28.10.2020 11:10:52 - Changed state from CREATED to INITIALIZING","28.10.2020 11:10:53 - Starting TestRun.e8cfdb4c-4f88-409f-881d-d9b4d6cc358d at 2020-10-28T11:10:54Z","28.10.2020 11:10:55 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:10:55 - Project Properties: ","28.10.2020 11:10:55 - etf.testcases - * ","28.10.2020 11:10:55 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:10:55 - username - ","28.10.2020 11:10:55 - authUser - ","28.10.2020 11:10:55 - authMethod - basic ","28.10.2020 11:10:55 - TestRunTask initialized","28.10.2020 11:11:03 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:11:09 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:12:08 ERROR Response did not meet SLA 44035/30000","28.10.2020 11:12:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:12:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:12:42.989 retry condition not satisfied: response.val == response.max
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:50.830 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:51.492 response time in milliseconds: 661.64 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:51 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:51.493 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:38.140 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:38.537 response time in milliseconds: 396.72 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:38 GMT 1 < X-Cnection: [close, close]
11:14:38.539 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:06:16.330 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:06:16.734 response time in milliseconds: 404.00 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:06:16 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:06:16.735 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:12:23.593 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:23.985 response time in milliseconds: 390.95 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:12:23 GMT 1 < ETag: "19224-5af58ad5383c6-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:44:43 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:12:23.986 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:12:43.417 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:43.814 response time in milliseconds: 397.36 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 1855 1 < Content-Type: text/xml 1 < Date: Wed, 28 Oct 2020 11:12:42 GMT 1 < X-Cnection: [close, close]
11:12:43.815 assertion failed: assert evaluated to false: filesize > 2000
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:07:01.727 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS"}}}
11:07:01.728 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS"}}}
11:07:03.349 response time in milliseconds: 1513.97
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:07:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883223174","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:07:03.349 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:08:50.597 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}}}
11:08:50.598 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}}}
11:09:13.212 response time in milliseconds: 21755.69
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:12 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:09:00 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/0cdf8b5d-ca33-49bd-8367-8ee9e817ed25.json","testRuns":{"TestRun":{"id":"EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:08:59.749Z","testTasks":{"TestTask":{"id":"EID8f6444f6-34f3-44bf-bb93-f5a6613d95c1","parent":{"ref":"EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0fe52367-8f18-410b-b21e-e5376be4a60c"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0fe52367-8f18-410b-b21e-e5376be4a60c","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:08:51.04Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:08:56.83Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:09:13.216 [print] EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25
11:09:13.216 [print] UNDEFINED
11:09:13.216 [print] Conformance Class Download Service - Pre-defined Atom
11:09:13.217 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/0cdf8b5d-ca33-49bd-8367-8ee9e817ed25.json
11:09:13.217 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/log
11:09:13.217 [print] statuspath TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25
11:09:13.218 [print] progresspath TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
11:09:13.218 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:09:13.738 response time in milliseconds: 513.73
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:09:13 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"141","max":"142","log":["28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)","28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:59 - Preparing 1 Test Task:","28.10.2020 11:08:59 - TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)","28.10.2020 11:08:59 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:59 - with parameters: ","28.10.2020 11:08:59 - etf.testcases = *","28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:59 - Setting state to CREATED","28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z","28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:01 - Project Properties: ","28.10.2020 11:09:01 - etf.testcases - * ","28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","28.10.2020 11:09:01 - username - ","28.10.2020 11:09:01 - authUser - ","28.10.2020 11:09:01 - authMethod - basic ","28.10.2020 11:09:01 - TestRunTask initialized"]}
11:09:13.740 [print] {
"val": "141",
"max": "142",
"log": [
"28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)",
"28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:08:59 - Preparing 1 Test Task:",
"28.10.2020 11:08:59 - TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)",
"28.10.2020 11:08:59 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:08:59 - with parameters: ",
"28.10.2020 11:08:59 - etf.testcases = *",
"28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:08:59 - Setting state to CREATED",
"28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z",
"28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:09:01 - Project Properties: ",
"28.10.2020 11:09:01 - etf.testcases - * ",
"28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ",
"28.10.2020 11:09:01 - username - ",
"28.10.2020 11:09:01 - authUser - ",
"28.10.2020 11:09:01 - authMethod - basic ",
"28.10.2020 11:09:01 - TestRunTask initialized"
]
}
11:09:13.741 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:09:14.254 response time in milliseconds: 513.09
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:09:14 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"149","max":"150","log":["28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)","28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:59 - Preparing 1 Test Task:","28.10.2020 11:08:59 - TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)","28.10.2020 11:08:59 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:59 - with parameters: ","28.10.2020 11:08:59 - etf.testcases = *","28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:59 - Setting state to CREATED","28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z","28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:01 - Project Properties: ","28.10.2020 11:09:01 - etf.testcases - * ","28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","28.10.2020 11:09:01 - username - ","28.10.2020 11:09:01 - authUser - ","28.10.2020 11:09:01 - authMethod - basic ","28.10.2020 11:09:01 - TestRunTask initialized"]}
11:09:14.254 retry condition not satisfied: response.val == response.max
11:09:14.254 sleeping before retry #1
11:09:19.255 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:09:19.768 response time in milliseconds: 511.96
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:09:19 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["28.10.2020 11:08:59 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:08:59 UTC 2020)","28.10.2020 11:08:59 - Resolving Executable Test Suite dependencies","28.10.2020 11:08:59 - Preparing 1 Test Task:","28.10.2020 11:08:59 - TestTask 1 (8f6444f6-34f3-44bf-bb93-f5a6613d95c1)","28.10.2020 11:08:59 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:08:59 - with parameters: ","28.10.2020 11:08:59 - etf.testcases = *","28.10.2020 11:08:59 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:08:59 - Setting state to CREATED","28.10.2020 11:08:59 - Changed state from CREATED to INITIALIZING","28.10.2020 11:09:00 - Starting TestRun.0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 at 2020-10-28T11:09:01Z","28.10.2020 11:09:01 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:09:01 - Project Properties: ","28.10.2020 11:09:01 - etf.testcases - * ","28.10.2020 11:09:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","28.10.2020 11:09:01 - username - ","28.10.2020 11:09:01 - authUser - ","28.10.2020 11:09:01 - authMethod - basic ","28.10.2020 11:09:01 - TestRunTask initialized","28.10.2020 11:09:16 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:16 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:16 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:17 ERROR Assertion failed with error \u0027TR.missingElement\u0027","28.10.2020 11:09:17 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}
11:09:19.776 retry condition not satisfied: response.val == response.max
11:09:19.776 sleeping before retry #2
11:09:24.777 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:09:25.298 response time in milliseconds: 519.83
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:09:25 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}
11:09:25.301 retry condition satisfied
11:09:25.302 [print] {
"val": "100",
"max": "100",
"log": [
"Already completed"
]
}
11:09:25.304 request: 6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 6 > Accept-Encoding: gzip,deflate 6 > Connection: Keep-Alive 6 > Host: inspire.ec.europa.eu 6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:55.649 java.net.SocketTimeoutException: Read timed out, http call failed after 30345 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0cdf8b5d-ca33-49bd-8367-8ee9e817ed25 11:09:55.649 http request failed: java.net.SocketTimeoutException: Read timed out
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:02.022 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:09:02.023 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:09:03.109 response time in milliseconds: 1081.80
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883343040","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:09:03.116 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:12:14.929 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:15.317 response time in milliseconds: 387.92 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:12:15 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:12:15.321 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:21.908 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS"}}}
11:15:21.909 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 292
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS"}}}
11:15:23.783 response time in milliseconds: 1767.14
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:23 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883723611","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:23.784 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:50.189 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities"}}}
11:13:50.190 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 278
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities"}}}
11:13:55.653 response time in milliseconds: 5357.72
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:55 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883635475","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:55.653 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:09:14.226 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:09:14.632 response time in milliseconds: 406.01 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:09:14 GMT 1 < X-Cnection: [close, close]
11:09:14.633 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:04:43.132 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/luchtfoto/infrarood/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:04:43.533 response time in milliseconds: 399.91 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:04:43 GMT 1 < ETag: "22af-59fdeb24e1400-gzip" 1 < Last-Modified: Mon, 02 Mar 2020 12:55:06 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:04:43.536 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:34.673 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:14:34.673 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
11:14:37.693 response time in milliseconds: 2914.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:37 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603883677436","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:14:37.694 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:12:53.855 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/wms/v1_0?service=WMS&request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:54.348 response time in milliseconds: 493.07 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:12:54 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:12:54.349 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:16:01.912 request: 1 > HEAD https://service.pdok.nl/kadaster/cp/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: service.pdok.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:02.277 response time in milliseconds: 364.15 1 < 200 1 < Access-Control-Allow-Headers: Content-Type 1 < Access-Control-Allow-Method: GET,POST,OPTIONS 1 < Access-Control-Allow-Origin: * 1 < Content-Length: 9425 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:01 GMT 1 < Server: lighttpd/1.4.53 1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
11:16:02.277 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
11:15:30.728 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:31.118 response time in milliseconds: 390.42 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:15:31 GMT 1 < ETag: "1c94e-5af58a6542a86-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:46 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:15:31.121 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
11:10:22.220 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wms?request=GetCapabilities&service=wms 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:22.618 response time in milliseconds: 397.28 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:10:22 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:10:22.619 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:13:15.371 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:13:15.808 response time in milliseconds: 436.59 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:13:15 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:13:15.809 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:09.934 request: 1 > HEAD https://service.pdok.nl/cbs/hh/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: service.pdok.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:10.288 response time in milliseconds: 353.37 1 < 200 1 < Access-Control-Allow-Headers: Content-Type 1 < Access-Control-Allow-Method: GET,POST,OPTIONS 1 < Access-Control-Allow-Origin: * 1 < Content-Length: 13067 1 < Content-Type: text/xml; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:10 GMT 1 < Server: lighttpd/1.4.53 1 < Strict-Transport-Security: max-age=3600; includeSubDomains; preload
11:14:10.288 assertion failed: path: $['Content-Type'][0], actual: 'text/xml; charset=UTF-8', expected: 'text/xml', reason: not equal
11:14:02.678 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/provincies/ps/wms/v1?SERVICE=WMS&REQUEST=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:03.074 response time in milliseconds: 395.61 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:03 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:14:03.075 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:09:34.038 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
11:09:34.039 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
11:09:35.595 response time in milliseconds: 1449.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:09:35 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883375416","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:09:35.604 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:10:57.933 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/top10nlv2/wms?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:10:58.326 response time in milliseconds: 392.74 1 < 200 1 < Accept-Ranges: bytes 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: application/xml 1 < Date: Wed, 28 Oct 2020 11:10:58 GMT 1 < ETag: "2b852-5af58a6649d86-gzip" 1 < Last-Modified: Tue, 15 Sep 2020 11:42:47 GMT 1 < Vary: Accept-Encoding 1 < X-Cnection: [close, close]
11:10:58.329 assertion failed: path: $['Content-Type'][0], actual: 'application/xml', expected: 'text/xml', reason: not equal
11:12:44.990 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:12:45.470 response time in milliseconds: 480.15 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Type: text/html;charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:12:45 GMT 1 < X-Cnection: [close, close]
11:12:45.471 assertion failed: path: $['Content-Length'][0], actual: null, expected: '#notnull', reason: actual json-path does not exist
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:01.011 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:14:01.012 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
11:14:07.739 response time in milliseconds: 5982.03
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:06 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Wed, 28 Oct 2020 11:14:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/758fffc6-1a63-4512-a1d2-2927fd0bc47d.json","testRuns":{"TestRun":{"id":"EID758fffc6-1a63-4512-a1d2-2927fd0bc47d","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-28T11:14:03.846Z","testTasks":{"TestTask":{"id":"EIDa4730d5b-83ba-4456-b1e7-a95c228aaeeb","parent":{"ref":"EID758fffc6-1a63-4512-a1d2-2927fd0bc47d"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID9de7fd2a-2391-4223-bc11-09b6cddda863"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n \"TR.missingSpatialDatasetIdentifierNamespace\"\n \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities, if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n \"/atom:feed/atom:link with @rel='self'\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"/atom:feed[substring(atom:id,1,4)!='http']\",\n \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/atom:feed/atom:id\",\n \"/atom:feed/atom:id\",\n messageExchange.getEndpoint(),\n \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n let $sortedValues := for $entry in //*:entry\n order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, ' ')\n \n let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n let $duplicateCount := count( $duplicates )\n let $distinctDuplicates := distinct-values( $duplicates )\n \n return if ($duplicateCount > 0) then \n (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n props.setPropertyValue(\"dataFeedURL\",i)\n props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&\"))\n testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n // testRunner.runTestStepByName(\"Tracer\")\n testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id , \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id , \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id , \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n i=i.replaceAll(\"%7B\",\"{\")\n i=i.replaceAll(\"%7D\",\"}\")\n log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n props.setPropertyValue(\"dataSetURL\",i)\n testRunner.runTestStepByName(\"ResolveDatasetLink\")\n // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Language\",\n \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n \"/os:OpenSearchDescription/os:Url\",\n messageExchange.getEndpoint(),\n \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID9de7fd2a-2391-4223-bc11-09b6cddda863","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-28T11:14:01.462Z","lastEditor":"unknown","lastUpdateDate":"2020-10-28T11:14:02.968Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
11:14:07.742 [print] EID758fffc6-1a63-4512-a1d2-2927fd0bc47d
11:14:07.742 [print] UNDEFINED
11:14:07.743 [print] Conformance Class Download Service - Pre-defined Atom
11:14:07.743 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/758fffc6-1a63-4512-a1d2-2927fd0bc47d.json
11:14:07.743 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/log
11:14:07.743 [print] statuspath TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d
11:14:07.743 [print] progresspath TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
11:14:07.743 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:08.255 response time in milliseconds: 511.11
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Wed, 28 Oct 2020 11:14:08 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized"]}
11:14:08.259 [print] {
"val": "16",
"max": "17",
"log": [
"28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)",
"28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies",
"28.10.2020 11:14:03 - Preparing 1 Test Task:",
"28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)",
"28.10.2020 11:14:03 - will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
"28.10.2020 11:14:03 - with parameters: ",
"28.10.2020 11:14:03 - etf.testcases = *",
"28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
"28.10.2020 11:14:03 - Setting state to CREATED",
"28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING",
"28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z",
"28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED",
"28.10.2020 11:14:06 - Project Properties: ",
"28.10.2020 11:14:06 - etf.testcases - * ",
"28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
"28.10.2020 11:14:06 - username - ",
"28.10.2020 11:14:06 - authUser - ",
"28.10.2020 11:14:06 - authMethod - basic ",
"28.10.2020 11:14:06 - TestRunTask initialized"
]
}
11:14:08.260 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:08.775 response time in milliseconds: 514.30
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Wed, 28 Oct 2020 11:14:08 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized"]}
11:14:08.780 retry condition not satisfied: response.val == response.max
11:14:08.780 sleeping before retry #1
11:14:13.782 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:14.297 response time in milliseconds: 514.87
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Wed, 28 Oct 2020 11:14:14 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
11:14:14.297 retry condition not satisfied: response.val == response.max
11:14:14.297 sleeping before retry #2
11:14:19.298 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:19.817 response time in milliseconds: 518.60
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Wed, 28 Oct 2020 11:14:19 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:14:19.818 retry condition not satisfied: response.val == response.max
11:14:19.818 sleeping before retry #3
11:14:24.818 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:25.322 response time in milliseconds: 503.24
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Wed, 28 Oct 2020 11:14:25 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:14:25.322 retry condition not satisfied: response.val == response.max
11:14:25.322 sleeping before retry #4
11:14:30.323 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:30.850 response time in milliseconds: 523.77
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Wed, 28 Oct 2020 11:14:30 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:14:30.850 retry condition not satisfied: response.val == response.max
11:14:30.851 sleeping before retry #5
11:14:35.852 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:36.359 response time in milliseconds: 506.84
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Wed, 28 Oct 2020 11:14:36 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:14:36.368 retry condition not satisfied: response.val == response.max
11:14:36.368 sleeping before retry #6
11:14:41.369 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:41.899 response time in milliseconds: 529.96
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Wed, 28 Oct 2020 11:14:41 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:14:41.900 retry condition not satisfied: response.val == response.max
11:14:41.900 sleeping before retry #7
11:14:46.900 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:47.411 response time in milliseconds: 510.48
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Wed, 28 Oct 2020 11:14:47 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}
11:14:47.411 retry condition not satisfied: response.val == response.max
11:14:47.411 sleeping before retry #8
11:14:52.412 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:52.986 response time in milliseconds: 572.73
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Wed, 28 Oct 2020 11:14:52 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:14:52.986 retry condition not satisfied: response.val == response.max
11:14:52.987 sleeping before retry #9
11:14:57.987 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:14:58.518 response time in milliseconds: 521.65
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Wed, 28 Oct 2020 11:14:58 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:14:58.518 retry condition not satisfied: response.val == response.max
11:14:58.518 sleeping before retry #10
11:15:03.519 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:04.035 response time in milliseconds: 516.19
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Wed, 28 Oct 2020 11:15:03 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:04.035 retry condition not satisfied: response.val == response.max
11:15:04.035 sleeping before retry #11
11:15:09.036 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:09.550 response time in milliseconds: 513.75
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Wed, 28 Oct 2020 11:15:09 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:09.551 retry condition not satisfied: response.val == response.max
11:15:09.551 sleeping before retry #12
11:15:14.551 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:15.068 response time in milliseconds: 516.06
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Wed, 28 Oct 2020 11:15:15 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:15.069 retry condition not satisfied: response.val == response.max
11:15:15.069 sleeping before retry #13
11:15:20.069 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:20.583 response time in milliseconds: 512.89
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Wed, 28 Oct 2020 11:15:20 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:20.583 retry condition not satisfied: response.val == response.max
11:15:20.583 sleeping before retry #14
11:15:25.584 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:26.100 response time in milliseconds: 514.88
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Wed, 28 Oct 2020 11:15:26 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:26.100 retry condition not satisfied: response.val == response.max
11:15:26.100 sleeping before retry #15
11:15:31.101 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:31.614 response time in milliseconds: 512.61
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Wed, 28 Oct 2020 11:15:31 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:31.614 retry condition not satisfied: response.val == response.max
11:15:31.614 sleeping before retry #16
11:15:36.615 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:37.142 response time in milliseconds: 526.28
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Wed, 28 Oct 2020 11:15:37 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:37.146 retry condition not satisfied: response.val == response.max
11:15:37.146 sleeping before retry #17
11:15:42.147 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:42.901 response time in milliseconds: 753.46
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Wed, 28 Oct 2020 11:15:42 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:42.902 retry condition not satisfied: response.val == response.max
11:15:42.902 sleeping before retry #18
11:15:47.903 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:48.990 response time in milliseconds: 1086.69
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Wed, 28 Oct 2020 11:15:48 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}
11:15:48.990 retry condition not satisfied: response.val == response.max
11:15:48.990 sleeping before retry #19
11:15:53.990 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID758fffc6-1a63-4512-a1d2-2927fd0bc47d/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
11:15:54.506 response time in milliseconds: 514.79
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Wed, 28 Oct 2020 11:15:54 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["28.10.2020 11:14:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Wed Oct 28 11:14:03 UTC 2020)","28.10.2020 11:14:03 - Resolving Executable Test Suite dependencies","28.10.2020 11:14:03 - Preparing 1 Test Task:","28.10.2020 11:14:03 - TestTask 1 (a4730d5b-83ba-4456-b1e7-a95c228aaeeb)","28.10.2020 11:14:03 - will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","28.10.2020 11:14:03 - with parameters: ","28.10.2020 11:14:03 - etf.testcases = *","28.10.2020 11:14:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","28.10.2020 11:14:03 - Setting state to CREATED","28.10.2020 11:14:03 - Changed state from CREATED to INITIALIZING","28.10.2020 11:14:05 - Starting TestRun.758fffc6-1a63-4512-a1d2-2927fd0bc47d at 2020-10-28T11:14:06Z","28.10.2020 11:14:06 - Changed state from INITIALIZING to INITIALIZED","28.10.2020 11:14:06 - Project Properties: ","28.10.2020 11:14:06 - etf.testcases - * ","28.10.2020 11:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","28.10.2020 11:14:06 - username - ","28.10.2020 11:14:06 - authUser - ","28.10.2020 11:14:06 - authMethod - basic ","28.10.2020 11:14:06 - TestRunTask initialized","28.10.2020 11:14:13 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","28.10.2020 11:14:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","28.10.2020 11:14:49 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","28.10.2020 11:14:52 ERROR Exception occurred in Test Step: java.lang.NullPointerException","28.10.2020 11:15:51 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}
11:15:54.506 retry condition not satisfied: response.val == response.max
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:14:05.977 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:14:06.368 response time in milliseconds: 390.42 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:14:06 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:14:06.369 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:14:43.883 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities"}}}
11:14:43.884 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities"}}}
11:14:45.557 response time in milliseconds: 1568.67
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:14:45 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883685391","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:14:45.558 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:15:10.844 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/wms/v1_0?request=GetCapabilities&service=WMS 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:15:11.240 response time in milliseconds: 395.58 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:15:11 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:15:11.241 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:13:04.201 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities"}}}
11:13:04.202 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities"}}}
11:13:07.688 response time in milliseconds: 3380.68
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:13:07 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603883587511","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:13:07.689 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:06:39.416 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities"}}}
11:06:39.420 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 288
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities"}}}
11:06:41.787 response time in milliseconds: 2261.17
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:06:41 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883201613","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:06:41.790 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:15:31.993 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities"}}}
11:15:31.993 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 278
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities"}}}
11:15:33.552 response time in milliseconds: 1451.20
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:15:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883733382","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:15:33.559 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }
11:16:49.988 request: 1 > HEAD https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities 1 > Accept-Encoding: gzip,deflate 1 > Connection: Keep-Alive 1 > Host: geodata.nationaalgeoregister.nl 1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5) 11:16:50.394 response time in milliseconds: 405.39 1 < 200 1 < Access-Control-Allow-Headers: SOAPAction,X-Requested-With,Content-Type,Origin,Authorization,Accept 1 < Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD 1 < Access-Control-Allow-Origin: * 1 < Access-Control-Max-Age: 1000 1 < Content-Length: 73 1 < Content-Type: text/html; charset=UTF-8 1 < Date: Wed, 28 Oct 2020 11:16:50 GMT 1 < Server: lighttpd/1.4.53 1 < X-Cnection: [close, close]
11:16:50.394 assertion failed: path: $['Content-Type'][0], actual: 'text/html; charset=UTF-8', expected: 'text/xml', reason: not equal
{
"label": "Conformance Class Download Service - Pre-defined Atom",
"executableTestSuiteIds": [
"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
],
"arguments": {},
"testObject": {
"resources": {
"serviceEndpoint": "<serviceEndpoint>"
}
}
}
11:10:54.437 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities"}}}
11:10:54.437 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities"}}}
11:10:56.712 response time in milliseconds: 2169.95
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Wed, 28 Oct 2020 11:10:56 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603883456545","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
11:10:56.713 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
function(url, hyperlinkText)
{ var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
karate.embed(html,'text/html'); }